/**
 * 
 */
package br.com.skynix.tcmc.model.conta;

import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.annotations.ForeignKey;

import br.com.skynix.tcmc.base.model.EntidadeAuditavel;
import br.com.skynix.tcmc.model.enumeration.UnidadeFederativaEnum;

/**
 * @author davi
 * 
 */
@Entity
@Table(name = "tb_contato")
public class Contato extends EntidadeAuditavel {
	@ManyToOne
	@JoinColumn(name = "id_contato_fk", nullable = true,
			referencedColumnName = "id")
	@ForeignKey(name = "FK001_contato")
	private Contato contato;

	@NotNull
	@ManyToOne
	@JoinColumn(name = "id_conta_fk", nullable = false,
			referencedColumnName = "id")
	@ForeignKey(name = "FK002_contato")
	private Conta conta;

	@NotNull
	@Size(max = 255)
	@Column(nullable = false, length = 255)
	private String nome;

	@Size(max = 15)
	@Column(nullable = true, length = 15)
	private String telefone;

	@Size(max = 15)
	@Column(nullable = true, length = 15)
	private String celular;

	@Size(max = 15)
	@Column(nullable = true, length = 15)
	private String fax;

	@Size(max = 200)
	@Column(nullable = true, length = 200)
	private String email;

	@Size(max = 255)
	@Column(nullable = true, length = 255)
	private String endereco;

	@Size(max = 5)
	@Column(nullable = true, length = 5)
	private String numero;

	@Size(max = 255)
	@Column(nullable = true, length = 255)
	private String bairro;

	@Size(max = 255)
	@Column(nullable = true, length = 255)
	private String cidade;

	@Size(max = 2)
	@Column(nullable = true, length = 2,
			columnDefinition = "CHAR(2) DEFAULT NULL")
	@Enumerated(EnumType.STRING)
	private UnidadeFederativaEnum estado;

	@Size(max = 15)
	@Column(nullable = true, length = 15)
	private String cep;

	@Size(max = 255)
	@Column(nullable = true, length = 255)
	private String complemento;

	@Column(name = "data_nascimento", nullable = true)
	private Timestamp dataNascimento;

	@Size(max = 255)
	@Column(nullable = true, length = 255)
	private String departamento;

	@Size(max = 255)
	@Column(nullable = true, length = 255)
	private String assistente;

	@Size(max = 15)
	@Column(name = "telefone_assistente", nullable = true, length = 15)
	private String telefoneAssistente;

	@Column(nullable = true, columnDefinition = "TEXT DEFAULT NULL")
	private String observacao;

	/**
	 * @return the contato
	 */
	public Contato getContato() {
		return contato;
	}

	/**
	 * @param contato the contato to set
	 */
	public void setContato(Contato contato) {
		this.contato = contato;
	}

	/**
	 * @return the conta
	 */
	public Conta getConta() {
		return conta;
	}

	/**
	 * @param conta the conta to set
	 */
	public void setConta(Conta conta) {
		this.conta = conta;
	}

	/**
	 * @return the nome
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * @param nome the nome to set
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	/**
	 * @return the telefone
	 */
	public String getTelefone() {
		return telefone;
	}

	/**
	 * @param telefone the telefone to set
	 */
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	/**
	 * @return the celular
	 */
	public String getCelular() {
		return celular;
	}

	/**
	 * @param celular the celular to set
	 */
	public void setCelular(String celular) {
		this.celular = celular;
	}

	/**
	 * @return the fax
	 */
	public String getFax() {
		return fax;
	}

	/**
	 * @param fax the fax to set
	 */
	public void setFax(String fax) {
		this.fax = fax;
	}

	/**
	 * @return the email
	 */
	public String getEmail() {
		return email;
	}

	/**
	 * @param email the email to set
	 */
	public void setEmail(String email) {
		this.email = email;
	}

	/**
	 * @return the endereco
	 */
	public String getEndereco() {
		return endereco;
	}

	/**
	 * @param endereco the endereco to set
	 */
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	/**
	 * @return the numero
	 */
	public String getNumero() {
		return numero;
	}

	/**
	 * @param numero the numero to set
	 */
	public void setNumero(String numero) {
		this.numero = numero;
	}

	/**
	 * @return the bairro
	 */
	public String getBairro() {
		return bairro;
	}

	/**
	 * @param bairro the bairro to set
	 */
	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	/**
	 * @return the cidade
	 */
	public String getCidade() {
		return cidade;
	}

	/**
	 * @param cidade the cidade to set
	 */
	public void setCidade(String cidade) {
		this.cidade = cidade;
	}

	/**
	 * @return the estado
	 */
	public UnidadeFederativaEnum getEstado() {
		return estado;
	}

	/**
	 * @param estado the estado to set
	 */
	public void setEstado(UnidadeFederativaEnum estado) {
		this.estado = estado;
	}

	/**
	 * @return the cep
	 */
	public String getCep() {
		return cep;
	}

	/**
	 * @param cep the cep to set
	 */
	public void setCep(String cep) {
		this.cep = cep;
	}

	/**
	 * @return the complemento
	 */
	public String getComplemento() {
		return complemento;
	}

	/**
	 * @param complemento the complemento to set
	 */
	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	/**
	 * @return the dataNascimento
	 */
	public Timestamp getDataNascimento() {
		return dataNascimento;
	}

	/**
	 * @param dataNascimento the dataNascimento to set
	 */
	public void setDataNascimento(Timestamp dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	/**
	 * @return the departamento
	 */
	public String getDepartamento() {
		return departamento;
	}

	/**
	 * @param departamento the departamento to set
	 */
	public void setDepartamento(String departamento) {
		this.departamento = departamento;
	}

	/**
	 * @return the assistente
	 */
	public String getAssistente() {
		return assistente;
	}

	/**
	 * @param assistente the assistente to set
	 */
	public void setAssistente(String assistente) {
		this.assistente = assistente;
	}

	/**
	 * @return the telefoneAssistente
	 */
	public String getTelefoneAssistente() {
		return telefoneAssistente;
	}

	/**
	 * @param telefoneAssistente the telefoneAssistente to set
	 */
	public void setTelefoneAssistente(String telefoneAssistente) {
		this.telefoneAssistente = telefoneAssistente;
	}

	/**
	 * @return the observacao
	 */
	public String getObservacao() {
		return observacao;
	}

	/**
	 * @param observacao the observacao to set
	 */
	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}
}
